<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function Person() {}
           Person.prototype.speci = '人类';
           Person.prototype.sayHi = function() {
            console.log(`你好，我是${this.name}`);
           }
        var wang = new Person('王子恒',19);
        // 原型对象独立于实例对象之外
        wang.species = 'wuweiqiyuegaoshou'; //在实例上设置属性，不是修改原型上的属性
        // 如果实例上有属性，就不会去原型上查找
         // 本身有属性用本身的属性，本身没有属性才会用原型的属性
        console.log(wang,wang.species,wang.__proto__);
        // 为什么有这个？ 因为原型对象object上有一个toString方法
        console.log(wang.toString());
        // Person.prototype 是一个对象，所以它的 __proto__ 指向 object.prototype
        console.log(wang.__proto__==Person.prototype);
        console.log(wang.__proto__.__proto__);
    </script>
</body>
</html>